﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using SGC.BE;
using SGC.BL.InformeAuditoria;
using SGC.BL.PlanAuditoria;
using System.Web.Services;

namespace SGC.Web.ModuloCalidad.Mantenimientos
{
    public partial class ActualizarInformeAuditoria : System.Web.UI.Page
    {
        #region Metodos de Usuario
        private void Limpiar()
        {
            txtCodigoPlan.Text = string.Empty;
            txtFechaPlan.Text = string.Empty;
            dgdAreas.DataSource = null;
            dgdProcedimientos.DataSource = null;
            txtAlcance.Text = string.Empty;
            txtObjetivo.Text = string.Empty;
            txtFechaInforme.Text = string.Empty;
            txtObservaciones.Text = string.Empty;
            txtAuditorLider.Text = string.Empty;
            txtProcesoLider.Text = string.Empty;
            dgdAreas.DataBind();
            dgdProcedimientos.DataBind();
        }

        private BE_InformeAuditoria ObtenerEntidad()
        {
            BE_InformeAuditoria entidad = new BE_InformeAuditoria();

            if ((string)Session["registro"] == "M")
            {
                entidad.CODIGO_INFORME = lblCodigo.Text;
            }
            else
            {
                entidad.CODIGO_INFORME = null;
            }

            entidad.FECHA_INFORME = DateTime.Parse(txthiddenFechaInforme.Value).ToString("yyyy-MM-dd");
            entidad.OBJETIVO = txtObjetivo.Text;
            entidad.OBSERVACION = txtObservaciones.Text;
            entidad.PLAN_AUDITORIA = new BE_PlanAuditoria() { CODIGO_PLAN = txtCodigoPlan.Text };
            entidad.RECOMENDACION = txtRecomendaciones.Text;
            entidad.SITUACION = cmb_Situacion_Informe.SelectedValue;            
            return entidad;
        }
        
        private void SetEntidad(BE_InformeAuditoria entidad)
        {
            if ((string)Session["registro"] == "M")
            {
                lblCodigo.Text = entidad.CODIGO_INFORME;
            }
            else
            {
                lblCodigo.Text = string.Empty;
            }

            txtFechaInforme.Text = DateTime.Parse(entidad.FECHA_INFORME).ToString("dd/MM/yyyy");
            txtObjetivo.Text = entidad.OBJETIVO;
            txtObservaciones.Text = entidad.OBSERVACION;
            txtCodigoPlan.Text = entidad.PLAN_AUDITORIA.CODIGO_PLAN;
            txtRecomendaciones.Text = entidad.RECOMENDACION;            
            cmb_Situacion_Informe.SelectedValue = entidad.SITUACION;
            //PLAN AUDITORIA
            

        }

        private void CargaPlan(BE_PlanAuditoria plan)
        {
            txtProceso.Text = plan.PROCESO.NOMBRE;
            txtFechaPlan.Text = plan.FECHA.ToString("dd/MM/yyyy");
            dgdAreas.DataSource = plan.AREAS;
            dgdAreas.DataBind();
            dgdProcedimientos.DataSource = plan.PROCEDIMIENTOS;
            dgdProcedimientos.DataBind();
            txtAlcance.Text = plan.ALCANCE;
            txtProcesoLider.Text = plan.PROCESO.LIDER;
            txtAuditorLider.Text = "AUDITOR 1";
        }
                
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["codigo"] = Request.QueryString["Codigo"];
                Session["registro"] = Request.QueryString["Registrar"];
                
                BL_InformeAuditoria negocio = new BL_InformeAuditoria();
                BE_InformeAuditoria entidad;

                if ((string)Session["codigo"] == "0000000000")
                {
                    //Registrar
                    //txtFechaSolicitud.Text = DateTime.Now.ToString("dd/MM/yyyy");
                }
                else
                {
                    //Modificar
                    entidad = negocio.ListarporId((string)Session["codigo"]);
                    SetEntidad(entidad);
                    CargaPlan(entidad.PLAN_AUDITORIA);                    
                }
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            BL_InformeAuditoria data = new BL_InformeAuditoria();
            BE_InformeAuditoria entidad = ObtenerEntidad();
            
            if ((string)Session["registro"] == "M")
            {
                int resultado = data.Modificar(entidad);
                if (resultado == 0)
                {
                    //Bien
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Informe Auditoria", "jsModificarSC();", true);

                }
                else
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Informe Auditoria", "jsErrorModificarSC();", true);
                }
            }
            else
            {
                int resultado = data.Registrar(entidad);
                if (resultado == 0)
                {
                    //Bien
                    Limpiar();
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Informe Auditoria", "jsRegistroSC();", true);

                }
                else
                {
                    //Mal
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Actualizar Informe Auditoria", "jsErrorRegistroSC();", true);
                }
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            StringBuilder strBuilder = new StringBuilder();
            strBuilder.Append("~/ModuloCalidad/Mantenimientos/Informe_Auditoria/ConsultarInformeAuditoria.aspx");
            Response.Redirect(strBuilder.ToString());
        }

        protected void btnBuscar__Click(object sender, EventArgs e)
        {
            BE_PlanAuditoria entidad = new BL_PlanAuditoria().ListarporId((string)Session["codPlanAud"]);
            if (entidad!=null)
            {
                txtCodigoPlan.Text = entidad.CODIGO_PLAN;
                CargaPlan(entidad);
            }
            
        }

        
    }
}